package h0716;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author 不知名帅哥
 * @version 1.0
 * @description 机器人搬砖 。这个题跟爱吃蟠桃的孙悟空有异曲同工之妙。
 * @date 2024/7/16 9:21
 */
public class RobotMoveBricks {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        int[] bricks = Arrays.stream(s.split(" ")).mapToInt(Integer::parseInt).toArray();

        int result = getResult(bricks);
        System.out.println(result);
    }

    private static int getResult(int[] bricks) {
        //先进行排序
        Arrays.sort(bricks);
        int n = bricks.length;
        if (n > 8) {  //如果是8个以上的仓库，必然不可能在8小时之内搬完.一个小时只能搬一个仓库
            return -1;
        }
        int min = bricks[0]; //初始化最小值为第一个元素
        int max = bricks[n - 1]; //每小时充满最大值的电量肯定可以搬完。
        int ans = max;
        while (min <= max) {
            int electricity = (min + max) >> 1;
            if (check(bricks, 8, electricity)) {
                ans = electricity;
                max = electricity - 1;  //如果满足证明太大了，需要寻找更小更优的数字
            } else {
                min = electricity + 1;
            }
        }
        return ans;
    }

    private static boolean check(int[] bricks, int h, int curEle) {
        int costEle = 0;
        for (int brick : bricks) {
            int temp = brick / curEle;
            costEle += temp + (brick % curEle == 0 ? 0 : 1); //计算清空一个仓库需要的时间
            if (costEle>h){
                return false;
            }
        }
        return true;
    }
}
